'''
    conftest.py文件的主要作用：
        1. 管理所有的hook函数。实现pytest的功能增强及二次修改。
        2. 用于管理整个测试过程中的所有Fixture
            可以让不同的文件实现对所有Fixture的正常调用。不用担心Fixture无法跨文件访问的作用域问题。
            conftest的作用域默认是当前路径下的所有测试文件以及子路径下的所有文件及文件夹。一般推荐将其放在测试用例根路径下
            session级别的Fixture都必须要放在conftest之中。
            autouse的Fixture也需要放在conftest之中。
'''
import allure
import pytest
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from pom_ui_frame.conf.options import options
from pom_ui_frame.page_object.log_out import Logout
from pom_ui_frame.page_object.login_page import LoginPage


# @pytest.fixture
# def hcc(request):
#     def hcc_finalizer():
#         print('hcc的后置执行')
#
#     request.addfinalizer(hcc_finalizer)
#
#     print('this is setup fixture')


# session级别的前后置操作行为


# @pytest.fixture(scope='session', autouse=True)
# def session_setup():
#     service = Service('../chromedriver.exe')  # 确保路径正确
#     driver = webdriver.Chrome(service=service,options=options())  # Selenium 4.x 的写法
#     lp = LoginPage(driver)
#     lp.login('jsh', '123456')
#
#     yield driver
#     driver.quit()  # 直接调用，无需嵌套 teardown()

@pytest.fixture(scope='module')  # 一个py文件是一个业务流程
def driver(request):
    # 在此处执行退出操作
    def driver_finalizer():
        lo=Logout(driver)
        lo.log_out()
        driver.quit()

    request.addfinalizer(driver_finalizer)

    driver = webdriver.Chrome(service=Service('../../chromedriver.exe'), options=options())
    lp = LoginPage(driver)
    lp.login('jsh', '123456')
    return driver




# # autouse的Fixture定义
# @pytest.fixture(autouse=True)
# def hcc_auto():
#     print('这是auto use hcc')
